import axios from "axios";
//引入消息提示
import {ElMessage} from 'element-plus';
//引入登录小仓库
import loginStore from "@/store/modules/login";

//利用axios对象的create方法，去创建axios实例
let request=axios.create({
    //基础路径 自动带上前缀
    baseURL: import.meta.env.VITE_APP_BASE_API,
    //超时时间，超过时间就获取不到后端的数据了
    timeout: 5000
})
//request实例添加请求拦截器
request.interceptors.request.use((config)=>{
    let lgst=loginStore();
    if(lgst.token){
        //config配置对象，headers属性请求头，给后台携带公共参数
        //设置token 放到请求头上 
        config.headers['Authorization']='Bearer '+lgst.token;
    }
    //console.log('请求拦截器:',config)
    return config;
})
//添加响应拦截器
request.interceptors.response.use((response)=>{
    //成功回调
    //console.log('响应拦截器:',response)
    return response.data;
},(error)=>{
    //http状态码
    //console.log('错误状态:',error.response)
    if(error.response==undefined){
        ElMessage({
            type:'error',
            message:'网络异常'
        })
    }else{
        ElMessage({
            type:'error',
            message:error.response.data.msg
        })
    }
    
    //返回一个失败的Promise对象
    return Promise.reject(error);
})
 
//对外暴露 才能被外部使用
export default request;